const mongoose = require('mongoose');

// 1 - 链接数据库
mongoose.connect('mongodb://localhost/myDatas');

// 2 - 设计集合结构 也就是表结构 字段名称就是表结构中的属性名称
var Schema = mongoose.Schema;

var userSchema = new Schema({ // 设置一些约束
    username: {
        type: String,
        required: true // 必须有
    },
    password: {
        type: String,
        required: true // 必须有
    },
    email: {
        type: String
    }
});

// 3 - 将文档结构发布为模型
// mongoose.model 讲一个架构发布为model。
// 第一个参数（数据库名称）：大写单词字符串用来表述数据库名称，
// mongoose会自动将大写名词的字符串生成小写负数的结合　User -> users
var User = mongoose.model('User',userSchema);

// 4 - 有了这个模型构造函数之后，就可以对 users 集合中的数据增删改查了
/* var admin = new User({
    username: 'admin',
    password: '345678',
    email: 'admin-1@163.com'
}); */


// 4.1 - 数据的增加和存储 【新增】
/* admin.save(function (err,ret) {
    if (err) {
        console.log('保存失败');
    } else {
        console.log('保存成功');
        console.log(ret);
    }
}); */

// 4.2 - 数据的查询  【查询】
/* User.find(function (err,ret) {
    if (err) {
        console.log('查询失败');
    } else {
        console.log('查询成功');
        console.log(ret);
    }
}); */


// 4.2.1 - 按条件查询 【条件查询】
/* User.find({
    username: 'admin-1'
},function (err,ret) {
    if (err) {
        console.log('查询失败');
    } else {
        console.log('查询成功');
        console.log(ret);
    }
}); */


// 4 - 3 删除数据
/* User.remove({
    username: 'admin-1'
},function (err,ret) {
    if (err) {
        console.log('删除失败');
    } else {
        console.log('删除成功');
        console.log(ret);
    }
}); */


// 4 -4 更新数据 【更新数据】
User.findByIdAndUpdate('5c209589d42ca1334097be39',{
    password: '123'
},function (err,ret) {
    if (err) {
        console.log('更新失败');
    } else {
        console.log('更新成功');
        console.log(ret);
    }
});
